package com.tanhua.dubbo.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tanhua.model.db.*;
import com.tanhua.model.vo.OptionVo;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface QuestionnaireApi {
    //查询与用户相关的问卷表是否存在
    Map<String, UserQuestionnaire> findUQ(long userId);

    //查询问卷
    List<Questionnaire> findQuestionnaire();

    //添加用户与问卷关系
    void saveUQ(UserQuestionnaire uq);

    //查询题目
    List<QQuestion> findQuestion(String level);

    //查询题目的选项
    List<OptionVo> findOption(Integer id);

    //更新问卷状态
    void updateUQ(UserQuestionnaire uq);

    //添加报告信息
    String saveReport(Report report, Set<Extra> list);

    //查询所有的报告信息
    List<Report> findReportAll(String level);

    //查询自己的id
    Report findByUserIdReport(Long userId, String level);

    //添加相似度
    void saveSimilar(Similar similar);

    //查询题目

    QQuestion findQuestionById(String questionId);
     //查询报告是否存在
    Report exitRepeatReport(long userId, String level);

    //解除问题表限制
    void relieve(long userId, String levelReport);
    //将报告id写入对应的数据库中
    void saveUQReportId(String reportId, String level, long userId);

    //删除自身相关的相似度表
    void deleteSimilar(Long userId, String level);

    //删除报告表
    void deleteReport(long userId, String level);

    //通过id查询报告
    Report findByReportIdReprot(Integer reportId);

    //根据报告id查询维度值
    List<Extra> findByReportIdExtra(Integer reportId);

    //根据相似度表查询用户
    Similar findByUserIdSimilar(long userId);

    //删除以前的报告的维度值
    void deleteExtra(Integer id);


    // 分页查询
    Page<Questionnaire> selectAll(Integer pageNumber, Integer pageSize);

    // 分页查询问题列表
    Page<QQuestion> selectQuestions(Integer pageNumber, Integer pageSize, String level);

    // 保存问题并返回问题id
    Integer saveQuestions(QQuestion questions);

    // 根据问题id删除问题
    void deleteQuestion(Integer questionId);

    // 根据问题id查询问题
    QQuestion selectQuestionById(Integer questionId);

    // 修改问题内容
    void updateQuestions(QQuestion questions);

}
